<?php
namespace Admin\Controller;

use Think\Controller;

// 基础
class BaseController extends Controller
{
    Public function _initialize(){

        parent::_initialize();

        // 内存缓存初始化
        initCache();

        // 获取项目名称
        $this->assign("sysName" , getConfig("site" , "name"));
    }

    // 根据地址ID获取省、市、区三级联动
    protected function regionId($regionId, &$list, &$data)
    {
        // 下拉框
        $province = getRegionList(0);
        $city = array("" => "");
        $area = array("" => "");
        $provinceId = "";
        $cityId = "";
        $areaId = "";

        // 获取省市区下拉框
        if (!empty($regionId)) {
            $address = M('Region')
                ->field("id_path")
                ->where(array("id" => $regionId))
                ->find();

            // 如果有
            if (!empty($address) && !empty($address['id_path'])) {
                $addresArr = explode(",", $address['id_path']);

                // 如果省有值，获取市下拉框
                if ($addresArr[0]) {
                    $provinceId = $addresArr[0];
                    $city = getRegionList($provinceId);
                }

                // 如果市有值，获取区下拉框
                if ($addresArr[1]) {
                    $cityId = $addresArr[1];
                    $area = getRegionList($cityId);
                }
                if ($addresArr[2]) {
                    $areaId = $addresArr[2];
                }
            }
        }

        // 选中值
        $data['provinceId'] = $provinceId;
        $data['cityId'] = $cityId;
        $data['areaId'] = $areaId;

        // 省市区下拉框
        $list['provinceList'] = $province;
        $list['cityList'] = $city;
        $list['areaList'] = $area;
    }

    // 输出ajax错误
    public function ajaxError($info)
    {
        $this->response(-1, $info, null);
    }

    // 输出ajax成功
    public function ajaxSuccess($data = null,$info = '成功')
    {
        $this->response(0, $info, $data);
    }


    /* -2：未登录
     * -1：失败
     * 0：成功
 　　100：请求错误
 　　101：未登录
 　　102：缺少签名
 　　103：缺少参数
 　　200：服务器出错
 　　201：服务不可用
 　　202：服务器正在重启*/
    public function response($code, $message = '', $data = array())
    {
        if (!(is_numeric($code))) {
            return '';
        }
        $result = array(
            'code' => $code,
            'msg' => $message,
            'data' => $data
        );
        exit($this->ajaxReturn($result));
    }

    // 保持数据
    public function set($key , $val){
        // 获取token
        $token = I('post.token');

        // 如果没有token，应该是web登录
        if(empty($token)){
            $_SESSION[$key] = $val;
        }else{
            // 获取保持的数据
            $session = S($token);

            // 如果没有数据
            if($session){
                $session = array();
            }
            $session[$key] = $val;

            S($token , $session);
        }
    }

    // 获取数据
    public function get($key){

        // 获取token
        $token = I('post.token');

        // 如果没有token，应该是web登录
        if(empty($token)){
            return $_SESSION[$key];
        }else{
            // 获取保持的数据
            $session = S($token);

            // 如果没有数据
            if($session){
                $session = array();
            }
            return $session[$key];
        }
    }

    // 删除数据
    public function remove($key){
        // 获取token
        $token = I('post.token');

        // 如果没有token，应该是web登录
        if(empty($token)){
            $_SESSION[$key] = null;
            unset($_SESSION[$key]);
        }else{
            // 获取保持的数据
            $session = S($token);

            // 如果没有数据
            if($session){
                return;
            }
            $session[$key] = null;
            unset($session[$key]);

            // 如果没有数据
            if(empty($session)){
                S($token , null);
            }else{
                S($token , $session);
            }
        }
    }

    // 设置用户信息
    public function setAccount($account){
        $this->set('admin' ,$account);
    }

    // 生成唯一码
    public function getUniqueCode(){
        $code = time() + rand(1000,9000000);
        return strtoupper(md5($code));
    }
}